import { ref } from "vue";
const shortcuts = [
    {
        text: '过去一周',
        value: () => {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
            return [start, end]
        },
    },
    {
        text: '过去一个月',
        value: () => {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            return [start, end]
        },
    },
    {
        text: '过去三个月',
        value: () => {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            return [start, end]
        },
    },
]

// 定义一个变量用来 存储你当前选择的是开始日期还是结束日期
const choiceDate = ref()
const cakebdarChange = (obj: [Date, null | Date]) => {
    const minDate = obj[0]
    const maxDate = obj[1]
    choiceDate.value = minDate.getTime();
    //如果已经选择结束日期的话将choiceDate变为null
    if (maxDate) choiceDate.value = null;
}


/**
 * 限制日期选择只能选择今天及之前的日期
 * 限制最长时间跨度只能选择不超过365天
 * @param time 
 */
const disabledDateFn = (time: any) => {
    // 一年按365天。
    const daysRange = 365;
    // 一天的毫秒数。
    const millisecondsInDay = 24 * 60 * 60 * 1000;

    // 获取当前年份、月份以及传入时间对应的年份和月份。
    const currentYear = new Date().getFullYear();
    const currentMonth = new Date().getMonth();
    const timeYear = new Date(time).getFullYear();
    const timeMonth = new Date(time).getMonth();


    if (choiceDate.value) {
        // 如果用户已经选择了一个日期。
        const selectedDate = new Date(choiceDate.value);
        const selectedTime = selectedDate.getTime();
        // 获取用户选择日期的时间戳。

        const rangeInMilliseconds = daysRange * millisecondsInDay;
        // 计算前后大约一年对应的毫秒数范围。

        const minDate = new Date(selectedTime - rangeInMilliseconds);
        const maxDate = new Date(selectedTime + rangeInMilliseconds);
        // 确定最小和最大允许的日期。

        const timeDate = new Date(time);

        return timeDate < minDate || timeDate > maxDate || timeYear > currentYear || (timeYear === currentYear && timeMonth > currentMonth) || time.getTime() > Date.now();
        // 返回满足以下条件之一的结果：传入时间对应的日期小于最小允许日期、大于最大允许日期、传入时间的年份大于当前年份或者年份相同但月份大于当前月份。
    } else {
        return timeYear > currentYear || (timeYear === currentYear && timeMonth > currentMonth) || time.getTime() > Date.now();
        // 如果用户没有选择日期，返回传入时间的年份是否大于当前年份或年份相同但月份大于当前月份的结果。
    }
}


export { cakebdarChange, disabledDateFn, shortcuts };
